package com.carefree.bookmall.service;


import com.carefree.bookmall.common.vo.PageVO;
import com.carefree.bookmall.entity.BookType;
import com.carefree.bookmall.exception.CustomException;

import java.util.List;

/**
 * @author Aurora
 */
public interface BookTypeService {

    /**
     * 查询书籍类别
     *
     * @return
     */
    public List<BookType> queryBookTypes();

    /**
     * 分页查询书籍类别
     *
     * @param pageNum  页码
     * @param pageSize 每页显示记录数
     * @return
     */
    public PageVO queryBookTypes(int pageNum, int pageSize);

    /**
     * 查询所有分类的书籍信息
     *
     * @param pageNum  页码
     * @param pageSize 每页显示记录数
     * @return
     */
    public PageVO queryAllBooksForTypes(int pageNum, int pageSize);

    /**
     * 根据书籍类别id分页查询书籍信息
     *
     * @param typeId     书籍类别id
     * @param pageNumber 页数
     * @return
     */
    public PageVO queryBookByBooktypeId(Integer typeId, int pageNumber, int pageSize);

    /**
     * 根据书籍类别id查询书籍类别
     *
     * @param typeId 书籍类别id
     * @return
     */
    public String queryBookTypeNameByBookTypeId(Integer typeId);

    /**
     * 添加书籍类别
     *
     * @param typeName 类别名称
     * @return true or false
     */
    public boolean addBookType(BookType bookType);

    /**
     * 删除书籍类别信息
     *
     * @param typeId 书籍类别id
     * @return true or false
     */
    public boolean removeBookType(Integer typeId) throws CustomException;

    /**
     * 修改书籍类别下信息
     *
     * @param typeId   书籍类别id
     * @param typeName 修改后的书籍类别名称
     * @return true or false
     */
    public boolean modifyBookType(BookType bookType);

    /**
     * 根据编号查询
     *
     * @param typeId 主键id
     * @return
     */
    BookType queryBookTypeById(Integer typeId) throws CustomException;

    /**
     * 根据分类对应的访问路径查询对应名称
     *
     * @param typeUrl 类别可访问路径
     * @return 类别名称
     * @throws CustomException
     */
    BookType queryBookTypeUrl(String typeUrl) throws CustomException;
}
